package linguo.level.mapObjects;

import java.awt.Graphics;

import linguo.level.Board;
import linguo.player.Bullet;
import linguo.player.Robot;

public abstract class CasilleroTransitable extends Casillero {

	protected MapObject objeto;
	protected Pintura pintura;

	public CasilleroTransitable(Board board, int x, int y) {
		this(board, x, y, null);
	}

	public CasilleroTransitable(Board board, int x, int y, MapObject objeto) {
		super(board, x, y);
		this.objeto = objeto;
		this.pintura = null;
	}
	
	public void render(Graphics g) {
		super.render(g);
		if (pintura != null) pintura.render(g);
	}

	/**
	 * Asigna un objeto al casillero 
	 * @param objeto objeto a asignar al casillero
	 */
	public void setObjeto(MapObject objeto) {
		this.objeto = objeto;
	}

	/**
	 * Asigna una pintura al casillero 
	 * @param pintura pintura a asignar al casillero
	 */
	public void setPintura(Pintura pintura) {
		this.pintura = pintura;
	}

	public boolean isSolid() {
		if (objeto != null && objeto.existe()) return objeto.isSolid();
		return false;
	}

	public boolean isFree() {
		if (objeto == null || !objeto.existe()) return true;
		return false;
	}

	public void transitar(Robot robot) {
		if (objeto != null && objeto.existe()) objeto.transitar(robot);
	}

	public void atacar(Bullet bullet) {
		if (objeto != null && objeto.existe()) objeto.atacar(bullet);
	}

	public void recoger(Robot robot) {
		if (objeto != null && objeto.existe()) objeto.recoger(robot);
	}
}
